class Solution {

public:

int myAtoi\(string str\) {

    int i=0;int flag=0;

    long long result=0;



    for\(i=0;i<str.size\(\);i++\){

        if\(isdigit\(str\[i\]\)\){

          result=result\*10+\(str\[i\]-48\);

          if\(!isdigit\(str\[i+1\]\)\) break;

            if\(result> INT\_MAX\) result=INT\_MAX;

            else{

            if\(result< INT\_MIN\){

               result=INT\_MIN;

             }

            else

               result=result;

          }

        }

        else{

            if\(\(str\[i\]=='+'\|str\[i\]=='-'\) && !isdigit\(str\[i+1\]\)\) 

            {result=0; 

             break;}

            if\(str\[i\]=='-'\) flag=1-flag;

            if\(str\[i\]!='+' && str\[i\]!='-'&& str\[i\]!=' '\){

                break;

            }

        }

    }

    if\(flag\) result=-result;

    if\(result> INT\_MAX\) result=INT\_MAX;

    else{

            if\(result< INT\_MIN\){

               result=INT\_MIN;

             }

            else

               result=result;}



    return result;

}

};

重点:

1.这个题目的例子太奇葩了,主要是他给的正确结果和我觉得的正确结果完全不一样。

2.要判断正负,但是+-2 这种例子是错误的,就是不能两个符号连续给

3.要注意空格,但是+01 23 这种还是1

4.要注意负数

5.考虑上下界,注意如果超过,就按照最大值最小值给

results matching ""

    No results matching ""